/**
 * \file Character.h
 * \author Niels van Galen Last & Erik Kok
 * \date 01-15-08
 */
#ifndef CHARACTER_H
#define CHARACTER_H

#include "ExampleApplication.h"
#include "OgreOde_Core/OgreOde_Core.h"

/**
 * The Generic Character class
 * It is used to derive objects from it which are displayed in the space.
 */	 
class Character {
// Attributes ------------------------------------------------------------------------------
	protected:
		SceneNode *mMainNode; // Main character node
		SceneNode *mSightNode; // "Sight" node - The character is supposed to be looking here
		SceneNode *mCameraNode; // Node for the chase camera
		Entity *mEntity; // Character entity
		SceneManager *mSceneMgr;
	public:
// Methods --------------------------------------------------------------------------------- 
	protected:
	public:
		/// Override to use it for updates
		virtual void update (Real elapsedTime, OIS::Keyboard *input, OIS::Mouse *mouse) = 0;
		// The three methods below returns the two camera-related nodes, 
		// and the current position of the character (for the 1st person camera)
		/**
		 * Return the sightnode of the player
	 	 * \return mSightNode The sightnode of the player
		 */
		SceneNode *getSightNode () { return mSightNode; }
		
		/**
		 * Return the sightnode of the camera
	 	 * \return mCameraNode The sightnode of the camera
		 */
		SceneNode *getCameraNode () { return mCameraNode; }
		
		/**
		 * Return the current position of the character
	 	 * \return worldPosition The current position of the player
		 */
		Vector3 getWorldPosition () { return mMainNode->getWorldPosition (); }
};

#endif
